package cn.s1995.sloth.bizs.oo.dto;

import cn.hutool.core.util.StrUtil;
import cn.s1995.sloth.common.core.util.WebUtils;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.FieldNameConstants;

import java.io.Serializable;
import java.text.MessageFormat;

/**
 * I18nDTO
 *
 * @author Lex
 * @description 国际化
 * @date 2024/01/10 15:45
 */
@Data
@FieldNameConstants
@Schema(name = "I18nDTO", description = "国际化")
@JsonIgnoreProperties(ignoreUnknown = true)
public class I18nDTO implements Serializable {

    /**
     * 英语
     */
    @Schema(description = "英文")
    private String en;

    /**
     * 中文
     */
    @Schema(description = "中文")
    @JsonProperty("zh-cn")
    private String zh;

    // /**
    //  * 法语
    //  */
    // @Schema(description = "法语")
    // private String fr;


    /**
     * 语言格式化
     *
     * @return
     */
    public String langFormat(String language, Object... args) {
        if (StrUtil.isEmpty(language)) {
            language = WebUtils.getLanguage();
        }
        if (StrUtil.isEmpty(language)) {
            return MessageFormat.format(this.getEn(), args);
        }

        if (language.toLowerCase().startsWith(I18nDTO.Fields.zh.toLowerCase())) {
            return MessageFormat.format(this.getZh(), args);
        } else {
            return MessageFormat.format(this.getEn(), args);
        }

    }

}
